/**
 * 封装本地存储相关的方法
 */

// 存储数据
export const setData = (key, value) => {
  // 只对数组和对象类型的数据转换为JSON格式字符串进行存储
  if (typeof value === 'object') {
    value = JSON.stringify(value)
  }
  localStorage.setItem(key, value)
}

// 获取数据
export const getData = key => {
  // 因为本地存储获取不到默认为 null, 因此不需要使用短路运算传入获取失败的值
  // 如果需要默认为数组或对象, 即可采用短路运算的方式 '[]' 或 '{}' 需要加上引号, 不加会报错
  // const data = localStorage.getItem(key) || 'null'
  const data = localStorage.getItem(key)
  // 防止本地存储是普通字符串 JSON.parse() 转普通字符串会报错
  // 因此使用 try/catch 语法 解决这个问题
  try {
    return JSON.parse(data)
  } catch (err) {
    return data
  }
}

// 删除数据
export const removeData = key => {
  localStorage.removeItem(key)
}
